/* 输出先序遍历第k个结点的值 */
#include <iostream>
#include "BiTreefun.h"
using namespace std;

// 输出先序遍历的第k个结点
void trave(BTNode *p, int k, int &n)
{
  // 如果二叉树不为空
  if (p != NULL)
  {
    // 记录此时遍历的是第n个结点
    ++n;
    
    // 如果遍历的是第k个结点
    if (k == n)
    {
      // 输出值
      cout << p->data;
      return;
    }
    
    // 遍历左子树
    trave(p->lchild, k, n);
    
    // 遍历右子树
    trave(p->rchild, k, n);
  }
}

int main()
{
  // 创建二叉树
  BTNode *T = create_bitree();
  int k = 3, n = 0;
  cout << "先序遍历的第k个结点是:";
  
  // 输出先序遍历的第k个结点
  trave(T, k, n);
}